home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Present…nuary (Partner) - Disc 2 / The Apple Reference and Presentations Library (Disc 2)(January 1994).iso / SAS Institute / US English / JMP Statistical / JMP-68K / SAMPLE DATA demo / AppleScript Demos / AppleScript Demo Text (long) < prev    next >
Text File  |  1994-03-16  |  23KB  |  553 lines

  1. set wt to 2 --WAITING TIME, SET THIS TO 0 FOR A FAST DEMO, 2 FOR MEDIUM, 4 FOR SLOW
  2. tell application "JMP Demo"
  3.     demo "A tour of the JMP Analyses" wait (wt)
  4.     set window position to {50, 50}
  5.     
  6.     demo "Open a data Table"
  7.     open table ":SAMPLE DATA demo:BIG CLASS (general)"
  8.     set name of last table to "class"
  9.     set labeled of column "Name" of table "class" to true
  10.     
  11.     --Distribution of Y--
  12.     demo "The first platform is Distribution of Y" wait (wt)
  13.     demo "for a description of the univariate distribution of each variable"
  14.     analyze distribution for {"Sex", "Age", "Height", "Weight"} from table "class"
  15.     demo "Now lets zoom the window to fill the screen" wait (wt)
  16.     set zoomed of distribution 1 to true
  17.     demo "Sex and Age are nominal variables, the platform shows frequency counts" move to {50, 90}
  18.     demo wait wt
  19.     demo "Height and Weight are continuous variables, the platform shows means etc" move to {550, 100}
  20.     demo wait wt
  21.     demo "For nominal variables, we have histograms and divided bar charts" move to {50, 90}
  22.     demo wait wt
  23.     demo "For continuous variables, we have histograms and box plots" move to {550, 100}
  24.     demo wait wt
  25.     demo "For each variable we have a graphical presentation at the top" move to {50, 90}
  26.     demo wait wt
  27.     demo "and the text presentation below" move to {50, 360}
  28.     demo wait wt
  29.     demo "at the bottom left are popup icons to select options" move to {30, 400}
  30.     demo wait wt
  31.     demo "for example, we can turn off the text reports" wait (wt)
  32.     analyze distribution 1 without text report
  33.     demo "and we can turn off the divided bars and box plots" wait (wt)
  34.     analyze distribution 1 without outlier box plot and mosaic plot
  35.     demo "these commands toggle the items on and off, text report on:" wait (wt)
  36.     analyze distribution 1 with text report
  37.     demo "text report off" wait (wt)
  38.     analyze distribution 1 without text report
  39.     demo "put a normal curve on the continuous variables" wait (wt)
  40.     analyze distribution 1 with normal curve
  41.     demo wait wt
  42.     demo "test that the mean is 140" wait (wt)
  43.     analyze distribution 1 mean test 140 with text report
  44.     demo wait wt
  45.     demo "do a normal quantile plot"
  46.     analyze distribution 1 with normal quantile plot
  47.     demo wait wt
  48.     demo "test for normality" wait (wt)
  49.     analyze distribution 1 with normality test
  50.     demo wait wt
  51.     set scroll of distribution 1 to {0, 0}
  52.     analyze distribution 1 without text report and normal quantile plot
  53.     demo wait wt
  54.     set zoomed of distribution 1 to true
  55.     set position of distribution 1 to {160, 70}
  56.     
  57.     --Row Highlighting--
  58.     demo "You can click on a histogram bar to highlight the rows that make it" move to {50, 50}
  59.     demo wait wt
  60.     demo "click on Sex='M' to highlight the males" wait (wt)
  61.     set selected of rows of table "class" whose column "Sex" is "M" to true
  62.     demo "click on Sex='F' to highlight the females" wait (wt)
  63.     set selected of rows of table "class" whose column "Sex" is "M" to false
  64.     set selected of rows of table "class" whose column "Sex" is "F" to true
  65.     demo wait wt
  66.     set selected of rows of table "class" whose column "Sex" is "F" to false
  67.     demo "click on Age=11" move to {170, 30}
  68.     demo wait wt
  69.     set selected of rows of table "class" whose column "Age" is 11 to true
  70.     demo "click on the the other ages" wait (wt)
  71.     set selected of rows of table "class" whose column "Age" is 11 to false
  72.     set selected of rows of table "class" whose column "Age" is 12 to true
  73.     set selected of rows of table "class" whose column "Age" is 12 to false
  74.     set selected of rows of table "class" whose column "Age" is 13 to true
  75.     set selected of rows of table "class" whose column "Age" is 13 to false
  76.     set selected of rows of table "class" whose column "Age" is 14 to true
  77.     set selected of rows of table "class" whose column "Age" is 14 to false
  78.     set selected of rows of table "class" whose column "Age" is 15 to true
  79.     set selected of rows of table "class" whose column "Age" is 15 to false
  80.     set selected of rows of table "class" whose column "Age" is 16 to true
  81.     set selected of rows of table "class" whose column "Age" is 16 to false
  82.     
  83.     demo "Now lets move on to another platform" wait (wt)
  84.     demo "But we'll leave up this one, moving it down" wait (wt)
  85.     set bounds of window 2 to {345, 9, 612, 660} --{top,left,bottom,right}
  86.     
  87.     --Fit Y by X, continuous by continuous--
  88.     demo "The second analyze command is Fit Y by X" wait (wt)
  89.     demo "Lets fit Height by Weight" wait (wt)
  90.     analyze fit for "Height" by "Weight" from table "class"
  91.     set zoomed of fit 1 to true
  92.     demo "The result starts as a simple scatterplot" wait (wt)
  93.     demo "The points respond to the row states in the data table" wait (wt)
  94.     demo "For example lets click the histograms again" wait (wt)
  95.     demo "Watch the points in the scatterplot highlight"
  96.     set selected of rows of table "class" whose column "Sex" is "M" to true
  97.     demo wait wt
  98.     set selected of rows of table "class" whose column "Sex" is "M" to false
  99.     set selected of rows of table "class" whose column "Sex" is "F" to true
  100.     demo wait wt
  101.     set selected of rows of table "class" whose column "Sex" is "F" to false
  102.     set selected of rows of table "class" whose column "Age" is 11 to true
  103.     set selected of rows of table "class" whose column "Age" is 11 to false
  104.     set selected of rows of table "class" whose column "Age" is 12 to true
  105.     set selected of rows of table "class" whose column "Age" is 12 to false
  106.     set selected of rows of table "class" whose column "Age" is 13 to true
  107.     set selected of rows of table "class" whose column "Age" is 13 to false
  108.     set selected of rows of table "class" whose column "Age" is 14 to true
  109.     set selected of rows of table "class" whose column "Age" is 14 to false
  110.     set selected of rows of table "class" whose column "Age" is 15 to true
  111.     set selected of rows of table "class" whose column "Age" is 15 to false
  112.     set selected of rows of table "class" whose column "Age" is 16 to true
  113.     set selected of rows of table "class" whose column "Age" is 16 to false
  114.     
  115.     demo "You can give the selected rows other properties" wait (wt)
  116.     demo "Lets mark the females with an X" wait (wt)
  117.     set selected of rows of table "class" whose column "Sex" is "F" to true
  118.     set marker of rows of table "class" whose column "Sex" is "F" to xMark
  119.     set selected of rows of table "class" whose column "Sex" is "F" to false
  120.     demo "and the males with a plus" wait (wt)
  121.     set selected of rows of table "class" whose column "Sex" is "M" to true
  122.     set marker of rows of table "class" whose column "Sex" is "M" to plusMark
  123.     set selected of rows of table "class" whose column "Sex" is "M" to false
  124.     demo "and color by age values" wait (wt)
  125.     set color of rows of table "class" whose column "Age" < 13 to cyan
  126.     set color of rows of table "class" whose column "Age" = 13 to yellowGreen
  127.     set color of rows of table "class" whose column "Age" > 13 to orange
  128.     set selected of rows of table "class" whose column "Age" < 13 to true
  129.     set selected of rows of table "class" whose column "Age" = 13 to true
  130.     set selected of rows of table "class" whose column "Age" > 13 to true
  131.     
  132.     demo "There are several other row states" wait (wt)
  133.     demo "The LABEL row state:" wait (wt)
  134.     repeat with i from 1 to 19
  135.         set labeled of row i of table "class" to true
  136.         set labeled of row i of table "class" to false
  137.     end repeat
  138.     demo "The HIDE row state:" wait (wt)
  139.     repeat with i from 1 to 19
  140.         set hidden of row i of table "class" to true
  141.     end repeat
  142.     repeat with i from 1 to 19
  143.         set hidden of row i of table "class" to false
  144.     end repeat
  145.     set selected of every row of table "class" to false
  146.     
  147.     demo "Now we use the commands in the Fit Y by X platform" wait (wt)
  148.     demo "Add a straight line fit" wait (wt)
  149.     analyze fit 1 with line fit
  150.     demo wait wt
  151.     demo "Or a polynomial, say degree 4" wait (wt)
  152.     analyze fit 1 poly fit 4
  153.     demo wait wt
  154.     demo "Or a flexible spline fit" wait (wt)
  155.     analyze fit 1 spline fit 10
  156.     demo wait wt
  157.     demo "Or bivariate normal density ellipses" wait (wt)
  158.     analyze fit 1 density ellipse 0.5 with reveal
  159.     demo wait wt
  160.     demo "The text reports are below" wait (wt)
  161.     repeat with i from 30 to 660 by 30
  162.         set scroll of fit 1 to {0, i}
  163.     end repeat
  164.     set revealed of report "Smoothing Spline Fit, lambda=10" of fit 1 to true
  165.     set revealed of report "Bivariate" of fit 1 to true
  166.     demo wait wt
  167.     demo "Lets close this and start up a new one" wait (wt)
  168.     close fit 1 saving no
  169.     demo "Density Ellipses Grouped by sex"
  170.     analyze fit for "Height" by "Weight" from table "class"
  171.     analyze fit 1 grouping column "Sex" density ellipse 0.5
  172.     demo wait wt
  173.     demo "Closing Window" move to {350, 30}
  174.     demo wait wt
  175.     close fit 1 saving no
  176.     
  177.     --Fit Y by X, continuous by nominal--
  178.     demo "The 'Fit Y by X' platform does different analyses" wait (wt)
  179.     demo "Depending on the 'Modeling Type' of the X and Y variables" wait (wt)
  180.     demo "For example, suppose you fit continuous-by-nominal" wait (wt)
  181.     demo "Height by Age is continuous-by-nominal" wait (wt)
  182.     analyze fit for "Height" by "Age" from table "class"
  183.     demo "First, you get a vertical scatter per X level" move to {150, 150}
  184.     
  185.     demo "Add quantiles with box plots" wait (wt)
  186.     analyze fit 1 with quantile fit
  187.     demo "Add a one-way analysis of variance" wait (wt)
  188.     analyze fit 1 with means and anova
  189.     demo "The height of the diamonds shows the 95% confidence limits for the means" wait (wt)
  190.     demo "Lets scroll down to the report"
  191.     repeat with i from 30 to 450 by 30
  192.         set scroll of fit 1 to {0, i}
  193.     end repeat
  194.     demo "Lets scroll back up" wait (wt)
  195.     set scroll of fit 1 to {0, 0}
  196.     demo wait wt
  197.     
  198.     demo "There are several Means Comparisons" wait (wt)
  199.     demo "Students t tests can be used" wait (wt)
  200.     analyze fit 1 with Student LSD
  201.     demo "The comparison circles show which mean is different from which others" wait (wt)
  202.     
  203.     demo "Three nonparametric tests are available. Wilcoxon for example" wait (wt)
  204.     analyze fit 1 with Wilcoxon test
  205.     set scroll of fit 1 to {0, 550}
  206.     demo "If you suspect the variances are different for each group" wait (wt)
  207.     demo "Then get the tests for unequal variances" wait (wt)
  208.     analyze fit 1 with test variances
  209.     set scroll of fit 1 to {0, 800}
  210.     demo "Closing Window" wait (wt)
  211.     close fit 1 saving no
  212.     
  213.     --Fit Y by X, nominal by nominal--
  214.     demo "For 'Fit Y by X' for nominal-by-nominal" wait (wt)
  215.     demo "You are doing Contingency tables" wait (wt)
  216.     analyze fit for "Age" by "Sex" from table "class" without mosaic plot and tests
  217.     analyze fit 1 with tests
  218.     demo "Chi-square tests for independence are shown" wait (wt)
  219.     demo "The graphical display of a contingency table is a mosaic plot"
  220.     analyze fit 1 with mosaic plot
  221.     demo wait wt
  222.     demo "You can even get a correspondence analysis" wait (wt)
  223.     analyze fit 1 with correspondence analysis
  224.     repeat with i from 100 to 550 by 50
  225.         set scroll of fit 1 to {0, i}
  226.     end repeat
  227.     demo "Closing Fit Nominal-by-nominal" wait (wt)
  228.     close fit 1 saving no
  229.     
  230.     --Fit Model
  231.     demo "Now lets go for the BIG GUNS of fitting" wait (wt)
  232.     demo "the FIT MODEL command" wait (wt)
  233.     demo "Here is a fit of Height by Age, Sex and their crossproduct" wait (wt)
  234.     analyze model fit from table ¬
  235.         "class" for "Height" by {"Age", "Sex", {"Age", "Sex"}}
  236.     demo wait wt
  237.     demo "First, you get a Model Specification Window to fill in" move to {350, 105}
  238.     demo wait wt
  239.     demo "Then you click the Run Model button" move to {390, 245}
  240.     demo wait wt
  241.     demo "Then you get the resulting Fit Window" move to {50, 150}
  242.     demo wait wt
  243.     demo "The first column of reports is all textual" wait (wt)
  244.     demo "But as you scroll you get graphs for every hypothesis test" wait (wt)
  245.     repeat with i from 50 to 1300 by 50
  246.         set scroll of model fit 1 to {i, 0}
  247.     end repeat
  248.     analyze model fit 1 with plot residual
  249.     demo "Closing Window"
  250.     close model fit 1 saving no
  251.     
  252.     demo "There are many personalities to the fitting system" wait (wt)
  253.     
  254.     --Fit Model: Screening Factorial
  255.     demo "•Screening Fit, for examining many factors in an experiment"
  256.     demo "Here we have a 5-factor 2-level factorial from Box, Hunter and Hunter"
  257.     open table ":SAMPLE DATA demo:REACTOR (screening)"
  258.     set name of last table to "Reactor"
  259.     demo "The Screening Personality for model fitting"
  260.     analyze model fit from table ¬
  261.         "Reactor" for ¬
  262.         "Y" by {{factorial:{"F", "Ct", "A", "T", "Cn"}}} ¬
  263.         personality screening with profiler
  264.     set zoomed of model fit 1 to true
  265.     demo wait 2 * wt
  266.     
  267.     demo "Box Cox, to find the power transformation on Y that fits best" wait (wt)
  268.     analyze model fit 1 with Box Cox
  269.     set scroll of model fit 1 to {0, 32000}
  270.     demo wait wt
  271.     
  272.     demo "Cube Plots, to see the predicted value at the extreme points"
  273.     analyze model fit 1 with cube plots
  274.     set zoomed of model fit 1 to true
  275.     set scroll of model fit 1 to {0, 32000}
  276.     demo wait wt
  277.     
  278.     demo "Interaction Plots, for each factor vs the others"
  279.     analyze model fit 1 with interaction plots
  280.     set zoomed of model fit 1 to true
  281.     set scroll of model fit 1 to {0, 32000}
  282.     demo wait wt
  283.     
  284.     demo "Effect Screening, to see which effects stand out from the others"
  285.     analyze model fit 1 with effect screening
  286.     set zoomed of model fit 1 to true
  287.     set scroll of model fit 1 to {0, 32000}
  288.     demo wait wt
  289.     analyze model fit 1 with Pareto plot
  290.     set zoomed of model fit 1 to true
  291.     set scroll of model fit 1 to {0, 32000}
  292.     demo wait wt
  293.     demo "closing"
  294.     close model fit 1
  295.     close window "Reactor: Model"
  296.     close table "Reactor" saving no
  297.     
  298.     
  299.     --Fit Model: Screening Multiple Response Surface
  300.     demo "Screening a Multiple-Y Response Surface"
  301.     open table ":SAMPLE DATA demo:TIRETREAD (screening)"
  302.     set name of last table to "tireTread"
  303.     analyze model fit from table ¬
  304.         "tireTread" for {"ABRASION", "MODULUS", "ELONG", "HARDNESS"} ¬
  305.         by {{surface:{"SILICA", "SILANE", "SULFUR"}}} ¬
  306.         personality screening with profiler
  307.     set zoomed of model fit 1 to true
  308.     demo "screening fit for 4 Y's by 3-factor response surface" wait (3 * wt)
  309.     close model fit 1
  310.     close window "tireTread: Model"
  311.     close table "tireTread" saving no
  312.     
  313.     --Fit Model: Manova
  314.     demo "Fitting a Manova repeated-measures model with 4 Y's"
  315.     open table ":SAMPLE DATA demo:DOGS (repeated measure)"
  316.     set name of last table to "dogs"
  317.     analyze model fit from table ¬
  318.         "dogs" for {"LogHist0", "LogHist1", "LogHist3", "LogHist5"} ¬
  319.         by {{factorial:{"drug", "dep1"}}} ¬
  320.         personality manova ¬
  321.         response function {{1, -1, 0, 0}, {0, 1, -1, 0}, {0, 0, 1, -1}}
  322.     set zoomed of model fit 1 to true
  323.     set scroll of model fit 1 to {0, 32000}
  324.     demo wait wt
  325.     execute menu item "Centroid Plot" of report "Whole Model" of model fit 1
  326.     demo wait wt
  327.     close model fit 1
  328.     close window "dogs: Model"
  329.     close table "dogs" saving no
  330.     
  331.     --Correlation Platform
  332.     demo "•The Correlations platform" wait (wt)
  333.     analyze correlation for {"Age", "Weight", "Height"} from table "class"
  334.     demo "Starts with just correlations as text"
  335.     analyze correlation 1 with scatterplot matrix
  336.     set zoomed of correlation 1 to true
  337.     demo "But it is easy to add a graphical version, a scatterplot matrix" wait (wt)
  338.     analyze correlation 1 with inverse correlations
  339.     analyze correlation 1 with partial correlations
  340.     analyze correlation 1 with pairwise correlations without partial correlations
  341.     set scroll of correlation 1 to {0, 120}
  342.     set scroll of correlation 1 to {0, 180}
  343.     set scroll of correlation 1 to {0, 240}
  344.     analyze correlation 1 with Kendall tau
  345.     set scroll of correlation 1 to {0, 300}
  346.     analyze correlation 1 with Spearman rho
  347.     analyze correlation 1 with Hoeffding D
  348.     set scroll of correlation 1 to {0, 380}
  349.     analyze correlation 1 without Kendall tau, Spearman rho and Hoeffding D
  350.     analyze correlation 1 with outlier distances
  351.     set scroll of correlation 1 to {0, 400}
  352.     analyze correlation 1 with jackknife distances
  353.     set scroll of correlation 1 to {0, 580}
  354.     demo "closing correlations" wait (wt)
  355.     close correlation 1 saving no
  356.     
  357.     demo "•The Cluster Platform"
  358.     analyze cluster for {"Age", "Weight", "Height"} from table "class"
  359.     demo "The process starts with each point a separate cluster" move to {20, 90} wait (wt)
  360.     demo "At each step, two clusters are joined into one" move to {140, 90} wait (wt)
  361.     demo "Until all the points are in one cluster" move to {300, 90} wait (wt)
  362.     demo "Now lets set it for 3 clusters and color, mark, and save the results" wait (wt)
  363.     analyze cluster 1 nCluster 3 with coloring, marking and save clusters
  364.     demo "And see how they appear on a scatterplot of two of the variables" wait (wt)
  365.     analyze fit for "Height" by "Weight" from table "class"
  366.     set zoomed of last fit to true
  367.     set position of last fit to {380, 250}
  368.     
  369.     demo wait wt
  370.     demo "Cluster 1" wait (wt)
  371.     set selected of rows of table "class" whose column "Cluster" is 1 to true
  372.     demo "Cluster 2" wait (wt)
  373.     set selected of rows of table "class" whose column "Cluster" is 1 to false
  374.     set selected of rows of table "class" whose column "Cluster" is 2 to true
  375.     demo "Cluster 3" wait (wt)
  376.     set selected of rows of table "class" whose column "Cluster" is 2 to false
  377.     set selected of rows of table "class" whose column "Cluster" is 3 to true
  378.     demo "Closing" wait (wt)
  379.     set selected of rows of table "class" whose column "Cluster" is 3 to false
  380.     close cluster 1 saving no
  381.     close last fit saving no
  382.     
  383.     --close table "class"
  384.     
  385.     demo "•The Survival Platform"
  386.     set window position to {50, 50}
  387.     open table ":SAMPLE DATA demo:RATS-DMBA (survival)"
  388.     set name of last table to "rats"
  389.     
  390.     demo "This table has survival data, how long rats survived in two groups" wait (wt)
  391.     demo "and some observations are censored" wait (wt)
  392.     demo "i.e. they are known only to be greater than some value" wait (wt)
  393.     analyze survival for "Days" label "Group" censored by "censor" from table "rats"
  394.     demo "Here are product-moment (Kaplan-Meier) survival estimates"
  395.     analyze survival 1 with reveal
  396.     set revealed of report "Group=Group 1" of survival 1 to true
  397.     set revealed of report "Group=Group 2" of survival 1 to true
  398.     set revealed of report "Combined" of survival 1 to true
  399.     repeat with i from 30 to 950 by 30
  400.         set scroll of survival 1 to {0, i}
  401.     end repeat
  402.     demo wait wt
  403.     set scroll of survival 1 to {0, 0}
  404.     analyze survival 1 with points
  405.     demo "With points shown. Censored points are shown above the steps" wait (wt)
  406.     analyze survival 1 with combined
  407.     demo "The survival estimates that combine the groups is also available" wait (wt)
  408.     analyze survival 1 with exponential plot
  409.     set scroll of survival 1 to {0, 300}
  410.     demo "The survival curve can be plotted on an exponential scale" wait (wt)
  411.     analyze survival 1 with Weibull plot without exponential plot
  412.     demo "and also on a Weibull basis" wait (wt)
  413.     close survival 1 saving no
  414.     close table "rats" saving no
  415.     
  416.     demo "•Charts"
  417.     summarize table "class" by {"Age", "Sex"} mean {"Height", "Weight"}
  418.     set name of last table to "classChart"
  419.     graph chart for "Mean(Height)" by {"Sex", "Age"} from table "classChart"
  420.     set wt2 to wt / 2
  421.     demo wait wt2
  422.     graph chart 1 orientation horizontal
  423.     demo wait wt2
  424.     graph chart 1 orientation vertical
  425.     demo wait wt2
  426.     graph chart 1 orientation pie
  427.     demo wait wt2
  428.     graph chart 1 orientation vertical type {needle}
  429.     demo wait wt2
  430.     graph chart 1 type {line}
  431.     demo wait wt2
  432.     graph chart 1 type {bar}
  433.     demo wait wt2
  434.     graph chart 1 with stack
  435.     demo wait wt2
  436.     graph chart 1 without stack
  437.     demo wait wt2
  438.     graph chart 1 with pattern
  439.     demo wait wt2
  440.     graph chart 1 without pattern
  441.     demo wait wt2
  442.     close chart 1 saving no
  443.     close table "classChart" saving no
  444.     
  445.     demo "•Overlay Plot"
  446.     graph plot for {"Height", "Weight"} by "Age" from table ¬
  447.         "class" points {true, false} connect {true, false} ¬
  448.         markers {plusMark, xMark} colors {red, blue} with overlay
  449.     close plot 1 saving no
  450.     
  451.     demo "•The spinning plot for 3D viewing"
  452.     set color of rows of table "class" whose column "Age" < 13 to cyan
  453.     set color of rows of table "class" whose column "Age" = 13 to yellowGreen
  454.     set color of rows of table "class" whose column "Age" > 13 to orange
  455.     graph spinning plot for {"Age", "Height", "Weight"} from table "class"
  456.     demo "Pitch"
  457.     graph spinning plot 1 rotate {3, 0, 0, 100}
  458.     demo "Yaw"
  459.     graph spinning plot 1 rotate {0, 3, 0, 100}
  460.     demo "Roll"
  461.     graph spinning plot 1 rotate {0, 0, 3, 100}
  462.     demo "spinning any way you want"
  463.     graph spinning plot 1 rotate {6, 5, 3, 100}
  464.     graph spinning plot 1 rotate {12, 6, 0, 100}
  465.     graph spinning plot 1 rotate {2, 3, 0, 100}
  466.     demo "with a box"
  467.     graph spinning plot 1 rotate {2, 3, 0, 100} with box
  468.     demo "with a white background"
  469.     graph spinning plot 1 rotate {2, 3, 0, 100} with white background without box
  470.     demo "with rays from origin"
  471.     graph spinning plot 1 with rays without white background
  472.     graph spinning plot 1 rotate {2, 3, 0, 100}
  473.     graph spinning plot 1 without rays
  474.     demo "rocking back and forth"
  475.     repeat with i from 1 to 4
  476.         graph spinning plot 1 rotate {0, 5, 0, 20}
  477.         graph spinning plot 1 rotate {0, -5, 0, 20}
  478.     end repeat
  479.     repeat with i from 1 to 4
  480.         graph spinning plot 1 rotate {5, 0, 0, 20}
  481.         graph spinning plot 1 rotate {-5, 0, 0, 20}
  482.     end repeat
  483.     close spinning plot 1 saving no
  484.     
  485.     --set bounds of window 2 to {5, 40, 640, 480}--{left,top,right,bottom}
  486.     
  487.     demo "•Pareto charts"
  488.     graph pareto plot for "Age" by "Sex" from table "class"
  489.     demo wait wt * 2
  490.     close pareto plot 1 saving no
  491.     
  492.     demo "•Control Charts"
  493.     graph control chart for {"Weight"} from table "class" type {individual}
  494.     demo wait wt * 2
  495.     close control chart 1 saving no
  496.     
  497.     demo "•Contour Plots"
  498.     open table ":SAMPLE DATA demo:LITTLE POND (contour)"
  499.     set name of last table to "little pond"
  500.     graph contour plot for "Z" by {"X", "Y"} from table "little pond"
  501.     demo wait wt * 2
  502.     close contour plot 1 saving no
  503.     close table "little pond" saving no
  504.     
  505.     demo "•Ternary Plots"
  506.     graph ternary plot by {"Height", "Weight", "Age"} from table "class"
  507.     demo wait wt * 2
  508.     close ternary plot 1
  509.     
  510.     demo "•Data Table Manipulations" wait (wt)
  511.     
  512.     demo "Summarize: mean of height and weight by age and sex"
  513.     summarize table "class" by {"Age", "Sex"} mean {"Height", "Weight"}
  514.     demo wait (2 * wt)
  515.     close last table saving no
  516.     
  517.     demo "Subset 4 rows and 2 columns"
  518.     subset table "class" row {2, 3, 4, 9} column {"Name", "Age"} making "subClass"
  519.     demo wait wt
  520.     close table "subClass" saving no
  521.     
  522.     demo "Sort"
  523.     sort table "class" by {"Age", descending, "Name"} making "sortClass"
  524.     demo "sorted by Age descending, then name" wait (2 * wt)
  525.     close table "sortClass" saving no
  526.     
  527.     demo "Stack, to stack several variables into several rows of one variable"
  528.     stack table "class" by {"Height", "Weight"} into "Y" id "Which" making "StackClass"
  529.     demo wait (2 * wt)
  530.     
  531.     demo "Split, to undo the stack"
  532.     split table "StackClass" column "Y" id "Which" making "class2"
  533.     demo wait (2 * wt)
  534.     
  535.     demo "concatenate"
  536.     concatenate {table "class", table "class2"} making "class3"
  537.     demo wait wt
  538.     close table "class3" saving no
  539.     close table "class2" saving no
  540.     close table "StackClass" saving no
  541.     
  542.     demo "Transpose"
  543.     subset table "class" row {1, 2, 3} column {"Height", "Weight"} making "s1"
  544.     transpose table "s1" making "s2"
  545.     demo wait (2 * wt)
  546.     close table "s2" saving no
  547.     close table "s1" saving no
  548.     
  549.     demo "• End of Demo. Thanks for looking."
  550.     close last window
  551.     close table "class" saving no
  552.     
  553. end tell